home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rwvector.lha / RWVector2.1 / src / mathpack / cfftf.f < prev    next >
Text File  |  1989-08-14  |  3KB  |  71 lines

  1. *deck cfftf
  2.       subroutine cfftf (n,c,wsave)
  3. C***BEGIN PROLOGUE  CFFTF
  4. C***REVISION DATE  811015   (YYMMDD)
  5. C***CATEGORY NO.  D6
  6. C***KEYWORDS FFT,FAST FOURIER TRANSFORM,COMPLEX
  7. C***DATE WRITTEN  FEBRUARY 1978
  8. C***AUTHOR  SWARZTRAUBER P.N. (NCAR)
  9. C***PURPOSE
  10. C  FORWARD FFT OF A COMPLEX PERIODIC SEQUENCE
  11. C***DESCRIPTION
  12. C     *****************************************************************
  13. C
  14. C     SUBROUTINE CFFTF(N,C,WSAVE)
  15. C
  16. C     *****************************************************************
  17. C
  18. C     SUBROUTINE CFFTF COMPUTES THE FORWARD COMPLEX DISCRETE FOURIER
  19. C     TRANSFORM (THE FOURIER ANALYSIS). EQUIVALENTLY , CFFTF COMPUTES
  20. C     THE FOURIER COEFFICIENTS OF A COMPLEX PERIODIC SEQUENCE.
  21. C     THE TRANSFORM IS DEFINED BELOW AT OUTPUT PARAMETER C.
  22. C
  23. C     THE TRANSFORM IS NOT NORMALIZED. TO OBTAIN A NORMALIZED TRANSFORM
  24. C     THE OUTPUT MUST BE DIVIDED BY N. OTHERWISE A CALL OF CFFTF
  25. C     FOLLOWED BY A CALL OF CFFTB WILL MULTIPLY THE SEQUENCE BY N.
  26. C
  27. C     THE ARRAY WSAVE WHICH IS USED BY SUBROUTINE CFFTF MUST BE
  28. C     INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE).
  29. C
  30. C     INPUT PARAMETERS
  31. C
  32. C
  33. C     N      THE LENGTH OF THE COMPLEX SEQUENCE C. THE METHOD IS
  34. C            MORE EFFICIENT WHEN N IS THE PRODUCT OF SMALL PRIMES. N
  35. C
  36. C     C      A COMPLEX ARRAY OF LENGTH N WHICH CONTAINS THE SEQUENCE
  37. C
  38. C     WSAVE   A REAL WORK ARRAY WHICH MUST BE DIMENSIONED AT LEAST 4N+1
  39. C             IN THE PROGRAM THAT CALLS CFFTF. THE WSAVE ARRAY MUST BE
  40. C             INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE) AND A
  41. C             DIFFERENT WSAVE ARRAY MUST BE USED FOR EACH DIFFERENT
  42. C             VALUE OF N. THIS INITIALIZATION DOES NOT HAVE TO BE
  43. C             REPEATED SO LONG AS N REMAINS UNCHANGED THUS SUBSEQUENT
  44. C             TRANSFORMS CAN BE OBTAINED FASTER THAN THE FIRST.
  45. C             THE SAME WSAVE ARRAY CAN BE USED BY CFFTF AND CFFTB.
  46. C
  47. C     OUTPUT PARAMETERS
  48. C
  49. C     C      FOR J=1,...,N
  50. C
  51. C                C(J)=THE SUM FROM K=1,...,N OF
  52. C
  53. C                      C(K)*EXP(-I*J*K*2*PI/N)
  54. C
  55. C                            WHERE I=SQRT(-1)
  56. C
  57. C     WSAVE   CONTAINS INITIALIZATION CALCULATIONS WHICH MUST NOT BE
  58. C             DESTROYED BETWEEN CALLS OF SUBROUTINE CFFTF OR CFFTB
  59. C
  60. C***REFERENCES
  61. C***ROUTINES CALLED  CFFTF1
  62. C***END PROLOGUE  CFFTF
  63.       dimension       c(1)       ,wsave(1)
  64. C***FIRST EXECUTABLE STATEMENT  CFFTF
  65.       if (n .eq. 1) return
  66.       iw1 = n+n+1
  67.       iw2 = iw1+n+n
  68.       call cfftf1 (n,c,wsave,wsave(iw1),wsave(iw2))
  69.       return
  70.       end
  71.